
Public Interface ICampaignEvent

    Property EventName() As String
    Property ScheduledTime() As TimeSpan


End Interface


<Serializable()> Public Class CampaignEvents : Inherits CollectionBase

    Default Public Property Item(ByVal index As Integer) As ICampaignEvent
        Get
            Return InnerList.Item(index)
        End Get
        Set(ByVal value As ICampaignEvent)
            InnerList.Item(index) = value
        End Set
    End Property

    Public Sub Add(ByVal value As ICampaignEvent)
        InnerList.Add(value)
    End Sub

    Public Sub Remove(ByVal obj As ICampaignEvent)
        InnerList.Remove(obj)
    End Sub

End Class


<Serializable()> Public Class BaseCampaignEvent : Implements ICampaignEvent
    Private _eventname As String
    Private _scheduledtime As New TimeSpan

    Public Property EventName() As String Implements ICampaignEvent.EventName
        Get
            Return _eventname
        End Get
        Set(ByVal value As String)
            _eventname = value
        End Set
    End Property

    Public Property ScheduledTime() As System.TimeSpan Implements ICampaignEvent.ScheduledTime
        Get
            Return _scheduledtime
        End Get
        Set(ByVal value As System.TimeSpan)
            _scheduledtime = value
        End Set
    End Property
End Class


<Serializable()> Public Class CampaignMessageEvent : Inherits BaseCampaignEvent

    Private _eventMessage As String

    Public Property EventMessage() As String
        Get
            Return _eventMessage
        End Get
        Set(ByVal value As String)
            _eventMessage = value
        End Set
    End Property

End Class


<Serializable()> Public Class CampaignActiveDeploymentzone : Inherits BaseCampaignEvent
    Private _depzone As DeploymentZone
    Private _active As Boolean '// if it should be active or deactive.

    Public Property DepZone() As DeploymentZone
        Get
            Return _depzone
        End Get
        Set(ByVal value As DeploymentZone)
            _depzone = value
        End Set
    End Property

    Public Property Active() As Boolean
        Get
            Return _active
        End Get
        Set(ByVal value As Boolean)
            _active = value
        End Set
    End Property

End Class


<Serializable()> Public Class CampaignBoostDeploymentPoints : Inherits BaseCampaignEvent
    Private _faction As Faction
    Private _pointvalue As Long

    Public Property fact() As Faction
        Get
            Return _faction
        End Get
        Set(ByVal value As Faction)
            _faction = value
        End Set
    End Property

    Public Property PointValue() As Long
        Get
            Return _pointvalue
        End Get
        Set(ByVal value As Long)
            _pointvalue = value
        End Set
    End Property

End Class


